草庐IT

java outOfMemoryError 与 stringbuilder

全部标签

java - StringBuilder/StringBuffer 与 "+"运算符

我正在阅读“Better,Faster,LighterJava”(作者BruceTate和JustinGehtland)并且熟悉敏捷类型团队的可读性要求,例如RobertMartin在他的干净的编码书籍。在我现在所在的团队中,我被明确告知不要使用+运算符,因为它会在运行时创建额外的(和不必要的)字符串对象。但是这个article,写回'04谈论对象分配是如何大约10条机器指令。(基本上免费)它还谈到了GC如何在这种环境中帮助降低成本。使用+、StringBuilder或StringBuffer之间的实际性能权衡是什么?(在我的例子中,它是StringBuffer,因为我们仅限于Java

java - StringBuilder/StringBuffer 与 "+"运算符

我正在阅读“Better,Faster,LighterJava”(作者BruceTate和JustinGehtland)并且熟悉敏捷类型团队的可读性要求,例如RobertMartin在他的干净的编码书籍。在我现在所在的团队中,我被明确告知不要使用+运算符,因为它会在运行时创建额外的(和不必要的)字符串对象。但是这个article,写回'04谈论对象分配是如何大约10条机器指令。(基本上免费)它还谈到了GC如何在这种环境中帮助降低成本。使用+、StringBuilder或StringBuffer之间的实际性能权衡是什么?(在我的例子中,它是StringBuffer,因为我们仅限于Java

java - 将 Java StringBuilder 转储到文件

将StringBuilder转储到文本文件的最有效/优雅的方法是什么?你可以这样做:outputStream.write(stringBuilder.toString().getBytes());但这对于非常长的文件是否有效?有没有更好的办法? 最佳答案 正如其他人指出的那样,使用Writer,并使用BufferedWriter,但不要调用writer.write(stringBuilder.toString());而只是writer.append(stringBuilder);.编辑:但是,我看到您接受了不同的答案,因为它是单行的

java - 将 Java StringBuilder 转储到文件

将StringBuilder转储到文本文件的最有效/优雅的方法是什么?你可以这样做:outputStream.write(stringBuilder.toString().getBytes());但这对于非常长的文件是否有效?有没有更好的办法? 最佳答案 正如其他人指出的那样,使用Writer,并使用BufferedWriter,但不要调用writer.write(stringBuilder.toString());而只是writer.append(stringBuilder);.编辑:但是,我看到您接受了不同的答案,因为它是单行的

java - 为什么 StringBuilder 链接模式 sb.append(x).append(y) 比常规 sb.append(x) 快; sb.append(y)?

我有一个显示非常奇怪结果的微基准:@BenchmarkMode(Mode.Throughput)@Fork(1)@State(Scope.Thread)@Warmup(iterations=10,time=1,timeUnit=TimeUnit.SECONDS,batchSize=1000)@Measurement(iterations=40,time=1,timeUnit=TimeUnit.SECONDS,batchSize=1000)publicclassChaining{privateStringa1="111111111111111111111111";privateStrin

java - 为什么 StringBuilder 链接模式 sb.append(x).append(y) 比常规 sb.append(x) 快; sb.append(y)?

我有一个显示非常奇怪结果的微基准:@BenchmarkMode(Mode.Throughput)@Fork(1)@State(Scope.Thread)@Warmup(iterations=10,time=1,timeUnit=TimeUnit.SECONDS,batchSize=1000)@Measurement(iterations=40,time=1,timeUnit=TimeUnit.SECONDS,batchSize=1000)publicclassChaining{privateStringa1="111111111111111111111111";privateStrin

java - 既然我们已经有了 StringBuilder,为什么还要使用 StringJoiner?

我最近遇到了一个Java8类StringJoiner它使用分隔符添加字符串并为其添加前缀和后缀,但我无法理解此类的需要,因为它也使用StringBuilder在后端,还执行非常简单的附加字符串操作。我是不是因为没有真正理解这门课的真正目的而错过了什么? 最佳答案 当您需要在Stream中加入字符串时,StringJoiner非常有用。例如,如果您必须遵循字符串列表:finalListstrings=Arrays.asList("Foo","Bar","Baz");使用起来更简单finalStringcollectJoin=strin

java - 既然我们已经有了 StringBuilder,为什么还要使用 StringJoiner?

我最近遇到了一个Java8类StringJoiner它使用分隔符添加字符串并为其添加前缀和后缀,但我无法理解此类的需要,因为它也使用StringBuilder在后端,还执行非常简单的附加字符串操作。我是不是因为没有真正理解这门课的真正目的而错过了什么? 最佳答案 当您需要在Stream中加入字符串时,StringJoiner非常有用。例如,如果您必须遵循字符串列表:finalListstrings=Arrays.asList("Foo","Bar","Baz");使用起来更简单finalStringcollectJoin=strin

java - StringBuilder 与 StringWriter 和 PrintWriter 的字符串组装

我最近遇到了一个从未见过的习语:StringWriter和PrintWriter的字符串组装。我的意思是,我知道如何使用它们,但我一直使用StringBuilder。是否有一个具体的理由偏爱一个而不是另一个?StringBuilder方法对我来说似乎更自然,但它只是样式吗?我在这里查看了几个问题(包括最接近的一个:StringWriterorStringBuilder),但没有一个问题的答案真正解决了是否有理由更喜欢一个而不是另一个来进行简单的字符串组装的问题。这是我多次看到并使用过的成语:StringBuilder的字符串组装:publicstaticStringnewline=Sy

java - StringBuilder 与 StringWriter 和 PrintWriter 的字符串组装

我最近遇到了一个从未见过的习语:StringWriter和PrintWriter的字符串组装。我的意思是,我知道如何使用它们,但我一直使用StringBuilder。是否有一个具体的理由偏爱一个而不是另一个?StringBuilder方法对我来说似乎更自然,但它只是样式吗?我在这里查看了几个问题(包括最接近的一个:StringWriterorStringBuilder),但没有一个问题的答案真正解决了是否有理由更喜欢一个而不是另一个来进行简单的字符串组装的问题。这是我多次看到并使用过的成语:StringBuilder的字符串组装:publicstaticStringnewline=Sy